# #####################类的封装与定义#######################################
import pandas as pd
import numpy as np

class DateTimeExtractor:
    def __init__(self, numpy_data):
        """
        初始化DateTimeExtractor类，接收一个numpy数组作为输入。
        数组的第一列应包含日期时间格式的数据。
        """
        self.numpy_data = numpy_data
        self.datetime_index = pd.to_datetime(self.numpy_data[:, 0])
        self.years = self.datetime_index.year
        self.months = self.datetime_index.month
        self.days = self.datetime_index.day
        self.hours = self.datetime_index.hour
        self.minutes = self.datetime_index.minute
        self.seconds = self.datetime_index.second

    def get_years(self):
        """
        获取所有年份信息。
        """
        return self.years

    def get_months(self):
        """
        获取所有月份信息。
        """
        return self.months

    def get_days(self):
        """
        获取所有天数信息。
        """
        return self.days

    def get_hours(self):
        """
        获取所有小时信息。
        """
        return self.hours

    def get_minutes(self):
        """
        获取所有分钟信息。
        """
        return self.minutes

    def get_seconds(self):
        """
        获取所有秒信息。
        """
        return self.seconds

    def get_datetime_parts(self):
        """
        获取所有日期时间部分信息，并以字典形式返回。
        """
        return {
            'years': self.years,
            'months': self.months,
            'days': self.days,
            'hours': self.hours,
            'minutes': self.minutes,
            'seconds': self.seconds
        }
    
"""
# 示例使用
if __name__ == "__main__":
    # 假设这是你的train_numpydata
    train_numpydata = np.array([
        ['2023-04-01 12:00:00', 'data1'],
        ['2023-04-02 13:30:45', 'data2'],
        ['2023-04-03 14:45:30', 'data3']
    ])
    
    # 创建DateTimeExtractor实例
    dt_extractor = DateTimeExtractor(train_numpydata)
    
    # 获取年份
    print("Years:", dt_extractor.get_years())
    
    # 获取所有日期时间部分信息
    print("All parts:", dt_extractor.get_datetime_parts())

"""
# #########################################################################